package com.hrc.rpc.annotation;

import com.hrc.rpc.common.constants.FaultTolerantRules;
import com.hrc.rpc.common.constants.LoadBalancerRules;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface RpcReference {

        /**
         * 版本
         */
        String serviceVersion() default "1.0";

        /**
         * 超时时间
         */
        long timeout() default 5000;

        /**
         * 可选的负载均衡:consistentHash,roundRobin...
         */
        String loadBalancer() default LoadBalancerRules.RoundRobin;

        /**可选的容错策略:failover,failFast,failsafe...
         */
        String faultTolerant() default FaultTolerantRules.FailFast;

        /**
         * 重试次数
         */
        long retryCount() default 3;
}
